package com.sunlands.deskmate.message.handler.storager;

import java.util.List;

/**
 * @author liude
 * @author anjunling@sunlands.com
 * <p>
 * 以因子(factor)的格式存储对象, 每个对象对应一个因子
 */
public interface MultipleSortedStorager<E> extends SortedStorager<E> {

    boolean add(String id, E message, long factor);

    List<E> rangeByFactor(String key, Long min, Long max);

    List<E> rangeByFactorByCount(String key, int count);

    long count(String id);

    List<E> rangeByIndex(String id, long min, long max);

    /**
     * 根据因子范围, 删除对应的键值
     *
     * @param key key
     * @param min factor min
     * @param max factor max
     */
    void removeByFactor(String key, long min, long max);

    void removeByIndex(String id, long min, long max);

    void del(String id);

}
